#include <iostream>
#include <algorithm>
using namespace std;
const int MAX = 1e6 + 1;
int nums[MAX] = {0};

int main()
{
    int n, p;
    cin >> n >> p;

    int num, maxNum;
    for (int i = 0; i < n; i++)
    {
        cin >> num;
        maxNum = max(maxNum, num);
        nums[num]++;
    }
    int l = 1, r = 2 * p + 1;
    int res = 0, sum = 0;
    //滑动窗口
    for (int i = 1; i < 2 * p + 1 && i <= maxNum; i++){
        sum += nums[i];
        if(i == maxNum){    //p很大可以满足所有顾客
            res = sum;
        }
    }
    
    while (r <= maxNum)
    {
        sum = sum - nums[l - 1] + nums[r];
        res = max(res, sum);
        l++;
        r++;
    }
    cout << res;
    return 0;
}

/*

题目描述
小怡开了一家蛋糕店，她有n个顾客，每位顾客i都有一个喜好的甜度值a[i]（1<=i<=n)。
甜度为k的蛋糕，当且仅当|a[i]-k|<=p 时，顾客i才能得到满足。给定n个顾客喜好的甜度值，
小怡想知道最多可以让多少顾客得到满足。

输入说明
第一行两个数n, p(1≤n,p≤1000000)，含义如题面描述。

接下来一行n个整数，表示顾客喜好的甜度值a[i] (1≤a[i]≤1000000)。

输出说明
输出一个数字，表示最多有多少顾客同时得到满足。

输入样例复制
6 2

1 5 3 2 4 6

输出样例复制
5

数据范围提示
甜度调成3或4，都可以满足5名顾客。

*/